SoSe2022

Folienübersicht

Zur Erinnerung

Korrelationstests

Auf Zusammenhänge testen

Korrelation vs. Regression

Korrelation

  • Prüfen von Beziehungen ohne Kausalität.
  • Das Skalenniveau kann ordinal oder metrisch sein.
  • Beide Variablen sind zufällige Variablen, es wird keine manipuliert.
  • Je nach Skalenniveau und Verteilung wird der Korrelationstyp gewählt.

Regression

  • Prüfen von Beziehungen mit Kausalität.
  • Beide Variablen müssen metrisch sein.
  • Unterscheidet in
    • Abhängige oder Antwortvariable Y
    • Unabhängige oder erklärende Variable X; diese wird meist manipuliert.

Charakterisierung bivariater Beziehungen


  • Form (linear, nicht-linear, quadratisch)
  • Richtung (positiv, negativ)
  • Stärke (wie viel Streuung/Rauschen?)
  • Ausreißer

Die Form

  • Zur Berechnung der Korrelation ist eine lineare Beziehung erforderlich.
  • Die Beziehung zwischen zwei Variablen ist allerdings oft nicht linear!
  • Transformation einer oder beider Variablen kann die Beziehung linearisieren.
  • ggplot2 bietet mehrere verschiedene Darstellungsmöglichkeiten transformierter Beziehungen (ohne die Rohdaten zu transformieren):
    • coord_trans() transformiert die Koordinaten des Plots entsprechend der angegebenen Transformation.
    • scale_x_log10() und scale_y_log10() log-transformiert die X- und Y-Achse zur Basis 10.

Die Form

Streudiagramm der Rohdaten

Hier ein Beispiel des möglichen Zusammenhangs zwischen dem Körpergewicht (in kg) und der Gehirnmasse (in g) von Säugetieren (Datensatz mammals aus dem Paket ‘MASS’):

MASS::mammals %>%
ggplot(aes(x = body, y = brain)) + 
  geom_point() 

Die Form

Streudiagramm mit coord_trans()

MASS::mammals %>%
ggplot(aes(x = body, y = brain)) + 
  geom_point() +
  coord_trans(x = "log10", y = "log10")

Die Form

Streudiagramm mit scale_x/y_log10()

MASS::mammals %>%
ggplot(aes(x = body, y = brain)) + 
  geom_point() +
  scale_x_log10() + scale_y_log10()

Quantifizierung der Stärke und Richtung von bivariaten Beziehungen

  • Messgröße: Korrelationskoeffizient
  • Wertebereich: -1 bis +1
    • Das Vorzeichen gibt die Richtung der Beziehung an.
    • Der Betrag die Stärke
      • 0 = keine Korrelation
      • -1 = starke negative Korrelation
      • +1 starke positive Korrelation

→ Dies gilt allerdings nur bei linearen Zusammenhängen!

Streuungsparameter für 1 vs. 2 Variablen

(korrigierte) Varianz von X

\[s^{2} = \frac{1}{n-1}\sum\limits_{i=1}^{n}(x_{i} - \bar{x})^2\]

Standardabweichung von X

\[s=\sqrt{s^{2}}\]

Kovarianz zwischen X und Y

\[Cov(x,y)=\frac{1}{n-1}\sum\limits_{i=1}^{n}(x_i- \bar{x})(y_i- \bar{y})\]

Kovarianz

Grafik

Standardisierung der Kovarianz

Kovarianz

  • Ein Maß für die Stärke einer linearen Beziehung
  • Einschränkung: absolute Größe hängt von den Einheiten der beiden Variablen ab.

\[Cov(X,Y)=\frac{1}{n-1}\sum\limits_{i=1}^{n}(x_i- \bar{x})(y_i- \bar{y})\]

Lösung: Maximale Kovarianz

  • Standardisierung der Kovarianz mit den beiden Standardabweichungen, so dass das Maß der Stärke zwischen -1 und +1 liegt
    • → Pearson Produkt-Moment-Korrelationskoeffizient

\[ Cov(x,y)_{max} = s_x*s_y\]

Parametrischer Korrelationskoeffizient

Pearson Produkt-Moment-Korrelationskoeffizient \(\rho\)

  • Der Korrelationskoeffizient r (bzw. \(\rho\) für die Population) wird durch das Verhältnis zwischen der Kovarianz und der maximalen Kovarianz quantifiziert:

\[r_{x,y} = \frac{Cov(x,y)}{Cov(x,y)_{max}} = \frac{\frac{1}{n-1}\sum\limits_{i=1}^{n}(x_i- \bar{x})(y_i- \bar{y})}{s_x*s_y}\]

  • \(r = \sqrt{R^2}\) → r ist die Quadratwurzel des “Bestimmtheitsmaßes” \(R^2\)
  • \(r = [-1,+1]\) → \(R^2\) ist immer positiv, während \(r\) die Richtung des Zusammenhangs angibt!

Nichtparametrischer Korrelationskoeffizient

1

Spearman’scher Rangkorrelationskoeffizient \(\rho\)

  • Rohwerte \(x_i\), \(y_i\) werden in Ränge \(X_i\), \(Y_i\) umgewandelt.
  • Differenzen zwischen den Rängen der einzelnen Beobachtungen der beiden Variablen werden berechnet: \(D_i = X_i - Y_i\)
  • \(r_s\) ist dann gegeben durch:

\[r_s = 1-\frac{6\sum D_i^2}{n(n^2-1)}~~~\text{mit n = Anzahl der Rangpaare}\]

  • Analog zum Pearson Korrelationskoeffizienten liegt \(r_s\) zwischen -1 und 1 und das Vorzeichen zeigt eine positive oder negative Korrelation an.

Nichtparametrischer Korrelationskoeffizient

2

Kendall’sches Tau \(\tau\)

  • Im Gegensatz zum Spearman’schen \(\rho\) nutzt das Kendall’sche \(\tau\) nur den Unterschied in den Rängen und nicht die Differenz der Ränge. In der Regel ist der Wert des Kendall’schen \(\tau\) etwas kleiner als der Wert des Spearman’schen \(\rho\).
  • \(\tau\) erweist sich darüber hinaus auch für intervallskalierte Daten als hilfreich, wenn die Daten nicht normalverteilt sind, die Skalen ungleiche Teilungen aufweisen oder bei sehr kleinen Stichprobengrößen.

Pearson Korrelation in R

Vektoren

Syntax

cor(x, y, method = "pearson")
# oder alternativ (weil 'pearson' Standard ist):
cor(x, y)
  • x und y sind in diesem Falle einzelne Vektoren.

Beispiel iris

cor(x = iris$Sepal.Length, y = iris$Sepal.Width)
[1] -0.1175698

Pearson Korrelation in R

Matrizen & data frames

  • Es können aber auch ganze Matrizen und data frames an x bzw. x und y übergeben werden (beide müssen numerisch sein!).
    • → dann wird der Korrelationskoeffizient für alle paarweisen Vergleiche der Variablen ausgegeben:

Beispiel iris

cor(x = iris[ ,1:4]) # wichtig: ohne 'species'
             Sepal.Length Sepal.Width Petal.Length Petal.Width
Sepal.Length    1.0000000  -0.1175698    0.8717538   0.8179411
Sepal.Width    -0.1175698   1.0000000   -0.4284401  -0.3661259
 [ erreichte getOption("max.print") --  2 Zeilen ausgelassen ]

Pearson Korrelationstest

Um zu testen, ob die Beziehung signifikant ist, kann die Funktion cor() erweitert werden zu cor.test():

Syntax

cor.test(x, y, method = "pearson") 
# oder einfach nur 
cor.test(x, y)
  • H0: \(\rho\) ist gleich Null
  • Durchführung eines t-Test mit der Kenngröße \(t = \frac{r}{s_r}\) und den Freiheitsgraden \(n-2\)

Beispiel iris

cor.test(x = iris$Sepal.Length, y = iris$Sepal.Width)
    Pearson's product-moment correlation

data:  iris$Sepal.Length and iris$Sepal.Width
t = -1.4403, df = 148, p-value = 0.1519
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.27269325  0.04351158
sample estimates:
       cor 
-0.1175698 

Nichtparametrische Korrelationskoeffizienten in R

sl <- iris$Sepal.Length
sw <- iris$Sepal.Width
cor(x = sl, y = sw, method = "pearson")
[1] -0.1175698
cor(x = sl, y = sw, method = "spearman")
[1] -0.1667777
cor(x = sl, y = sw, method = "kendall")
[1] -0.07699679
cor.test(x = sl, y = sw, method = "spearman")
    Spearman's rank correlation rho

data:  sl and sw
S = 656283, p-value = 0.04137
alternative hypothesis: true rho is not equal to 0
sample estimates:
       rho 
-0.1667777 
cor.test(x = sl, y = sw, method = "kendall")
    Kendall's rank correlation tau

data:  sl and sw
z = -1.3318, p-value = 0.1829
alternative hypothesis: true tau is not equal to 0
sample estimates:
        tau 
-0.07699679 

Handling von fehlenden Werten

  • Argument use → wähle hier ‘pairwise.complete.obs’ um die paarweisen Werte zu entfernen wenn ein NA vorkommt.
sl[1] <- NA
cor(x = sl, y = sw, method = "pearson")
[1] NA
cor(x = sl, y = sw, method = "pearson", use = "pairwise.complete.obs")
[1] -0.1121059

Transformation

Wann transformieren?

Wozu transformieren?

  • Verteilung der Daten normalisieren.
  • Streuung reduzieren und Varianzen zwischen Gruppen angleichen.
  • Einfluss von Ausreißern reduzieren.
  • Beziehung zwischen Variablen linearer machen (für Korrelationen und Regressionsanalysen)

Die richtige Wahl

  • Die Wahl der “richtigen” Transformation kann schwierig sein und basiert, zumindest teilweise, auf Erfahrung.
  • Einflussfaktoren:
    • Fragestellung
      • Sind extremere Werte von Interesse oder die am häufigsten vorkommenden?
      • Bei Gemeinschaftsanalysen: geht es darum, welche Arten vorkommen oder mehr um die relativen Abundanzen der Arten (dominante vs. seltene Arten)?
    • Wahl der Analysemethode
      • Welche Annahmen müssen erfüllt sein?
      • Muss das Skalenniveau (z.B. das metrische) erhalten bleiben? (Korrelationen können beispielsweise nicht mit nominalen Daten gemacht werden)

Aus DS1: Umwandlung des Skalenniveau

Ein Beispiel

Skalenniveaus lassen sich umwandeln, allerdings kann dies immer mit einem Informationsverlust einhergehen.

Häufig angewandte Transformationen

Arkussinus

  • Geeignet für Prozente und Proportionen, die nicht normalverteilt sind.
x <- c(0.5, 0.2, 0.3)
x_arc <- asin(sqrt(x))

Wurzeltransformation

  • Geeignet für Häufigkeitsdaten (‘count data’).
  • Quadratwurzel:
    • Wenn Varianz = Mittelwert oder Daten Poisson-verteilt sind.
  • Vierte Wurzel:
    • Wenn die Varianz > Mittelwert entspricht oder Daten negativ binomial-verteilt sind.
x <- c(3,1,1,5,7,42)
x_2 <- sqrt(x) 
# oder: x^0.5
x_4 <- sqrt(sqrt(x)) 
# oder: x^0.25

Logarithmus

  • Geeignet wenn Varianzen >> Mittelwert.
  • Wenn der Datensatz Nullen enthält, dann addiere zu jeder Beobachtung eine Konstante.
x <- c(0, 0.5, 7.8, 9.4)
# natürlicher Log:
x_ln <- log(x + 0.1)  
# Log zur Basis 10:
x_log10 <- log10(x + 0.1)  

Powertransformation

  • Familie von Transformationen die nur angewendet werden können, wenn die Daten nicht negativ sind → ansonsten Konstante dazu addieren.
  • Die Transformation wird durch einen Potenzparameter \({\lambda}\) (lambda) definiert:
    • \(x(\lambda) = x^{\lambda}\) wenn \(\lambda \neq 0\) und \(x(\lambda) = log(x),~~\text{wenn}~~ \lambda = 0\)
  • Alternativ Box-Cox-Transformation wählen (Box & Cox, 1964):
    • \(\frac{x^{\lambda} - 1}{\lambda}\), wenn \(\lambda \neq 0\) und \(log(x)\), wenn \(\lambda = 0\)

Umfasst viele traditionelle Transformationen

  • \({\lambda}\) = 0.50: Quadratwurzel-Transformation
  • \({\lambda}\) = 0.25: 4te Wurzel-Transformation
  • \({\lambda}\) = 0: natürlicher Logarithmus
  • \({\lambda}\) = 1: keine Transformation

Vergleich Power- vs. Box-Cox-Transformation

\(\lambda = 0.5\)

Powertransformation

Vergleich verschiedener \(\lambda\)

Aus DS1: Schema zur Linearisierung durch Transformationen

Aus DS1: Anwendung der ‘bulging’ Regel

Your turn …

Shiny App

Fragen

  1. Welches Lambda zur Datennormalisierung?
  2. Welches Lambda zur Angleichung von Varianzen?
  3. Welches Lambda zur Linearisierung?

Übungsaufgabe

Übungen aus…

Kapitel 9 - Korrelation


  • R Notebook-Skripte
    • DS2_09_Übungen.Rmd
    • DS2_09_Übungen_Lösung.Rmd

Abschlussquiz

Fragen?